/**
 * 找出数组对象中指定属性为空值或没有该属性的对象
 * @param {Array} arr - 输入的数组对象
 * @param {string} key - 要检查的属性名（例如 'id'）
 * @returns {Array} - 包含指定属性为空值或没有该属性的对象的数组
 */
function findInvalidKeyObjects(arr, key) {
    return arr.filter(obj => {
        // 检查对象是否没有指定的属性，或者该属性是 null 或 undefined
        return !obj.hasOwnProperty(key) || obj[key] === null || obj[key] === undefined || obj[key] === '';
    });
}

const inputArray = [
    { id: 1, name: 'Alice' },
    { id: null, name: 'Bob' },
    { name: 'Charlie' }, // 没有 id 属性
    { id: '', name: 'David' }, // id 为空字符串
    { id: 2, name: 'Eve' }
];

const invalidObjects = findInvalidKeyObjects(inputArray, 'id');
console.log(invalidObjects);
// 输出: [{ id: null, name: 'Bob' }, { name: 'Charlie' }, { id: '', name: 'David' }]